﻿
USE master
go
if exists (select * from sys.databases where name='NhaSach1042085')
	drop database NhaSach1042085
go
create database NhaSach1042085
go
USE NhaSach1042085
go
CREATE TABLE Sach
(
MaSach INT IDENTITY NOT NULL,
TenSach NVARCHAR(255),
MaTheLoai INT,
MaTacGia INT,
SoLuong INT default 0,
DonGia float default 0,
TinhTrang INT DEFAULT 1, 
 PRIMARY KEY(MaSach)
)
GO
CREATE TABLE TheLoai
(
MaTheLoai INT IDENTITY NOT NULL ,
TenTheLoai NVARCHAR(255),
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaTheLoai)
)
Go
CREATE TABLE TacGia
(
MaTacGia INT IDENTITY NOT NULL ,
TenTacGia NVARCHAR(255),
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaTacGia)
)
GO
CREATE TABLE PhieuNhap
(
MaPhieuNhap INT IDENTITY ,
NgayNhap DATETIME,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaPhieuNhap)
)
GO
CREATE TABLE ChiTietPhieuNhap
(
MaChiTiet INT IDENTITY ,
MaPhieuNhap INT,
MaSach INT,
SoLuong INT default 0,
PRIMARY KEY(MaChiTiet)
)
GO
CREATE TABLE HoaDon
(
MaHoaDon INT IDENTITY ,
MaKhachHang INT,
NgayLap DATETIME,
TongTien Float default 0,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaHoaDon)
)
GO
CREATE TABLE ChiTietHoaDon
(
MaChiTiet INT IDENTITY ,
MaHoaDon INT,
MaSach INT,
SoLuongBan INT default 0,
DonGiaBan FLOAT default 0,
PRIMARY KEY(MaChiTiet)
)
GO
CREATE TABLE KhachHang
(
MaKhachHang INT IDENTITY ,
HoTen NVARCHAR(255),
DiaChi NVARCHAR(255),
DienThoai varchar(15),
Email varchar(255),
TienNo FLOAT default 0,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaKhachHang)
)
GO
CREATE TABLE PhieuThuTien
(
MaPhieuThu INT IDENTITY ,
MaKhachHang INT,
NgayThu DATETIME,
SoTienThu FLOAT default 0,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaPhieuThu)
)
GO

CREATE TABLE BaoCaoCongNo
(
MaBaoCaoCongNo INT IDENTITY,
Thang DATETIME,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaBaoCaoCongNo)
)
CREATE TABLE ChiTietBaoCaoCongNo
(
MaChiTiet INT IDENTITY,
MaKhachHang INT,
MaBaoCaoCongNo INT,
NoDau FLOAT default 0,
PhatSinh FLOAT default 0,
NoCuoi FLOAT default 0,
PRIMARY KEY(MaChiTiet)
)
Go
CREATE TABLE BaoCaoTon
(
MaBaoCaoTon INT IDENTITY,
Thang DATETIME,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(MaBaoCaoTon)
)
Go
CREATE TABLE ChiTietBaoCaoTon
(
MaChiTiet INT IDENTITY,
MaBaoCaoTon INT,
MaSach INT,
TonDau INT default 0,
PhatSinh INT default 0, 
TonCuoi INT default 0,
PRIMARY KEY(MaChiTiet)
)
Go
CREATE TABLE ThamSo
(
MaThamSo INT IDENTITY,
TenThamSo NVARCHAR(255),
GiaTri FLOAT default 0,
SuDung INT DEFAULT 1,
QuiDinh INT,
PRIMARY KEY(MaThamSo)
)
Go
CREATE TABLE NguoiDung
(
TenDangNhap varchar(50),
MatKhau varchar(50),
HoTen NVARCHAR(255),
MaChucVu INT,
TinhTrang INT DEFAULT 1,
PRIMARY KEY(TenDangNhap)
)

CREATE TABLE ChucVu
(
MaChucVu INT IDENTITY,
TenChucVu NVARCHAR(255),
Quyen INT,
TinhTrang INT,
PRIMARY KEY(MaChucVu)
)

ALTER TABLE Sach
	ADD 
		CONSTRAINT FK_Sach_TheLoai FOREIGN KEY(MaTheLoai) REFERENCES TheLoai(MaTheLoai),
		CONSTRAINT FK_Sach_TacGia FOREIGN KEY(MaTacGia) REFERENCES TacGia(MaTacGia)
ALTER TABLE ChiTietPhieuNhap
	ADD
		CONSTRAINT FK_ChiTietPhieuNhap_Sach FOREIGN KEY(MaSach) REFERENCES Sach(MaSach),
		CONSTRAINT FK_ChiTietPhieuNhap_PhieuNhapSach FOREIGN KEY(MaPhieuNhap) REFERENCES PhieuNhap(MaPhieuNhap)
ALTER TABLE ChiTietHoaDon
	ADD
		CONSTRAINT FK_ChiTietHoaDon_HoaDon FOREIGN KEY(MaHoaDon) REFERENCES HoaDon(MaHoaDon),
		CONSTRAINT FK_ChiTietHoaDon_Sach FOREIGN KEY(MaSach) REFERENCES Sach(MaSach)

ALTER TABLE HoaDon
	ADD
		CONSTRAINT FK_HoaDon_KhachHang FOREIGN KEY(MaKhachHang) REFERENCES KhachHang(MaKhachHang)

ALTER TABLE PhieuThuTien
	ADD
		CONSTRAINT FK_PhieuThuTien_KhachHang FOREIGN KEY(MaKhachHang) REFERENCES KhachHang(MaKhachHang)

ALTER TABLE NguoiDung
	ADD
		CONSTRAINT FK_NguoiDung_ChucVu FOREIGN KEY(MaChucVu) REFERENCES ChucVu(MaChucVu)

ALTER TABLE ChiTietBaoCaoTon
	ADD
		CONSTRAINT FK_ChiTietTon_BaoCaoTon FOREIGN KEY(MaBaoCaoTon) references BaoCaoTon(MaBaoCaoTon),
		CONSTRAINT FK_ChiTietTon_Sach FOREIGN KEY(MaSach) references Sach(MaSach)
ALTER TABLE ChiTietBaoCaoCongNo
	ADD
		CONSTRAINT FK_ChiTietCongNo_CongNo FOREIGN KEY(MaBaoCaoCongNo) references BaoCaoCongNo(MaBaoCaoCongNO),
		CONSTRAINT FK_ChiTietCongNo_KhachHang FOREIGN KEY(MaKhachHang) references KhachHang(MaKhachHang)




-- Tao Trigger cho cac bang dam bao khi update cot tinh trang
if exists (select * from SysObjects where name='tg_TheLoai')
	drop trigger tg_TheLoai
Go
create trigger tg_TheLoai on TheLoai
for update 
as
if update(TinhTrang)
	if exists(select * from inserted i, Sach s
				where i.TinhTrang=0 AND i.MaTheLoai=s.MaTheLoai)
	begin
		raiserror(N'Không thể Update',15,1)
		rollback tran
	end
go

--Proc lấy mã cuối cùng của 1 bảng
if exists (select * from SysObjects where NAME='spGetCurrentID')
	drop proc spGetCurrentID
go
create Proc spGetCurrentID @Table varchar(100)
as
begin	
	declare @CurrentID int
	select @CurrentID=IDENT_CURRENT(@Table)
	select  @CurrentID
end
go
--Nhập liệu
--TheLoai
insert into TheLoai(TenTheLoai) values(N'Văn học')
insert into TheLoai(TenTheLoai) values(N'Âm Nhạc')
insert into TheLoai(TenTheLoai) values(N'Tin học')
insert into TheLoai(TenTheLoai) values(N'Luật')
insert into TheLoai(TenTheLoai) values(N'Kinh tế')
insert into TheLoai(TenTheLoai) values(N'Ngoại ngữ')
insert into TheLoai(TenTheLoai) values(N'Thể thao - Du lịch')
go
--TacGia

insert into TacGia(TenTacGia) values(N'Nathan Bennett')
insert into TacGia(TenTacGia) values(N'Ahsaf Ladii')
insert into TacGia(TenTacGia) values(N'David Smith')
insert into TacGia(TenTacGia) values(N'Nguyễn Tân Bình')
insert into TacGia(TenTacGia) values(N'Đỗ Thị Hồng Vân')
insert into TacGia(TenTacGia) values(N'Nick Frank')
insert into TacGia(TenTacGia) values(N'Esmar')
insert into TacGia(TenTacGia) values(N'Đặng Quan Minh')
insert into TacGia(TenTacGia) values(N'Phạm Hữu Khang')
insert into TacGia(TenTacGia) values(N'Lê Thuận')
insert into TacGia(TenTacGia) values(N'Nhiều tác giả')
insert into TacGia(TenTacGia) values(N'Phạm Quang Huy')
insert into TacGia(TenTacGia) values(N'ThS Lữ Đức Hào')
insert into TacGia(TenTacGia) values(N'Nguyễn Ngọc Quyên')
insert into TacGia(TenTacGia) values(N'Lê Trường Sơn')

insert into TacGia(TenTacGia) values(N'Bộ tài chính')
insert into TacGia(TenTacGia) values(N'ThS Hà Thị Ngọc Hà')
insert into TacGia(TenTacGia) values(N'Nguyễn Ngọc Nhi')
insert into TacGia(TenTacGia) values(N'Ed Ponsi')
insert into TacGia(TenTacGia) values(N'Caspian Wood')
insert into TacGia(TenTacGia) values(N'Huỳnh Lợi')
insert into TacGia(TenTacGia) values(N'Jack Fruit')
insert into TacGia(TenTacGia) values(N'Phạm Trí Hùng')
insert into TacGia(TenTacGia) values(N'Dave Lakani')
insert into TacGia(TenTacGia) values(N'Takahashi')

insert into TacGia(TenTacGia) values(N'Bảo Ninh')
insert into TacGia(TenTacGia) values(N'Nguyễn Thế Tường')
insert into TacGia(TenTacGia) values(N'nguyễn Hữu Nam')
insert into TacGia(TenTacGia) values(N'Trần Minh Hợp')
insert into TacGia(TenTacGia) values(N'Mac Can')
insert into TacGia(TenTacGia) values(N'Rick Riodan')
insert into TacGia(TenTacGia) values(N'Tim Obrian')
insert into TacGia(TenTacGia) values(N'Mikai Provin')
insert into TacGia(TenTacGia) values(N'Christina Odd')
insert into TacGia(TenTacGia) values(N'Emili Rose')

insert into TacGia(TenTacGia) values(N'Nguyễn Hạnh')
insert into TacGia(TenTacGia) values(N'Karen Backer')
insert into TacGia(TenTacGia) values(N'Hoàng hạc')
insert into TacGia(TenTacGia) values(N'Maria Su')
insert into TacGia(TenTacGia) values(N'Lê Tân')
insert into TacGia(TenTacGia) values(N'First News')
insert into TacGia(TenTacGia) values(N'Từ Vũ')
insert into TacGia(TenTacGia) values(N'Lê quốc Thắng')
insert into TacGia(TenTacGia) values(N'Tô Kiều Ngân')
insert into TacGia(TenTacGia) values(N'Nguyễn Hạnh')

--
insert into TacGia(TenTacGia) values(N'Nguyễn Văn Tính')
insert into TacGia(TenTacGia) values(N'Trần Văn Hòa')
insert into TacGia(TenTacGia) values(N'Lê Thị Tuyết Mai')
insert into TacGia(TenTacGia) values(N'Trần Thế Vinh')
insert into TacGia(TenTacGia) values(N'Bùi Văn Quá')
insert into TacGia(TenTacGia) values(N'Trịnh Thế Long')
insert into TacGia(TenTacGia) values(N'Văn Phạm Khoa')
insert into TacGia(TenTacGia) values(N'Hồ Tâm')
insert into TacGia(TenTacGia) values(N'Nguyễn Đình Thêm')

go
--Sach
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Cẩm nang giám đốc',1,1,0,49000)
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Thế giới cong ',1 ,2 , 0,50000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Marketing 3.0 ', 1, 3,0 ,100 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Tinh Thần Kinh Doanh và Sự khởi nghiệp ',3 ,2 ,500 ,150000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Kế Toán Tài Chính',3 ,2 , 3,80000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Quản Trị Cung Ứng', 3,4 ,0 ,00 )

insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Vẽ mô hình 3D trong AutoCad', 3,9,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Tự học Photoshop', 3,10,0 ,17000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Lập trình web bằng PHP', 5,11,0 ,100 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Lập trình C++', 3,12,0 ,50000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Xử lý xự cố trên máy tính', 5,13,150 ,100 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Thực hành Internet', 3,14,320 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Quản lý mạng LAN', 3,15,100 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Virus và cách phòng chống', 3,16,0 ,100000 )

insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Khoa Học Quản Lý', 5,17,0 ,0000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Từ Điển Quản Trị Doanh Nghiệp', 5,18,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'10 Cách làm giàu', 5,19,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Bí Quyết kinh doanh', 5,20,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Văn hóa tổ chức và lãnh đạo', 5,21,0 ,100000)
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Phân tích hoạt động kinh doanh', 5,22,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Quản trị dự án hiện đại', 5,23,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Kinh tế học doanh nghiệp', 5,24,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Đánh lừa cho thương hiệu', 5,25,0 ,100000 )

insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Ngây thơ và phóng đãng', 1,26,0 ,1000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Yêu em kể từ ngày cưới', 1,27,0 ,111000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Tôi là tất cả của tên ấy', 1,28,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Sự thống trị của nam giới', 1,28,0 ,140000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Đố dám yêu em', 1,30,0 ,155000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Tuổi thơ dữ dội', 1,31,0 ,156000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Hôm nay tóc tôi màu vàng', 1,32,0 ,31000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Hội những trái tim cô đơn', 1,33,0 ,23000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Chàng trai của Ann', 1,34,0 ,350000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Nỗi niềm trong trẻ', 1,35,0 ,110000 )

insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Phương pháp chơi guitar bass', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Chơi nhạc Blu bằng Ghita', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Tuyển tập nhạc bất hủ', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Tự học Piano', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'100 ca khúc hay nhất MTV', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Ngày về xa lắm', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Nhạc trẻ tuyển chọn', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Em học đàn organ', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'70 ca khúc bất hủ', 2,36,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Love Song', 2,36,0 ,110000 )

insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Hướng dẫn thi hành Điều lệ Đảng', 3,37,0 ,50000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Hỏi đáp luật kinh tế', 3,38,0 ,80000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Luật sử dụng năng Lượng tiết kiệm', 3,39,0 ,90000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Luật giáo dục sửa đổi và các văn bản mới nhất', 3,40,0 ,100000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Những Quy định mới nhất về luật đất đai', 3,41,0 ,110000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Hệ Thống Văn Bản Quy Phạm Pháp Luật Dành Cho Môn Học Pháp Luật Đại Cương
Hệ Thống Văn Bản Quy Phạm Pháp Luật Dành Cho Môn Học Pháp Luật Đại Cương', 3,42,0 ,170000 )
insert into Sach(TenSach,MaTheLoai,MaTacGia,SoLuong,DonGia) values(N'Luật Đấu Thầu Và Văn Bản Hướng Dẫn Thực Hiện
Luật Đấu Thầu Và Văn Bản Hướng Dẫn Thực Hiện ', 3,43,0 ,1000 )

update Sach set DonGia=45000 where DonGia<45000
go
--ThamSo
insert into ThamSo(TenThamSo,GiaTri,SuDung,QuiDinh) values(N'Lượng Nhập tối thiểu',150,1,1);
insert into ThamSo(TenThamSo,GiaTri,SuDung,QuiDinh) values(N'Lượng Tồn tối đa',300,1,1);
insert into ThamSo(TenThamSo,GiaTri,SuDung,QuiDinh) values(N'Tiền nợ tối đa',2000000,1,2);
insert into ThamSo(TenThamSo,GiaTri,SuDung,QuiDinh) values(N'Lượng Tồn tối thiểu sau khi bán',20,1,2);
insert into ThamSo(TenThamSo,GiaTri,SuDung,QuiDinh) values(N'Số tiền thu không vượt quá số tiền khách nợ',0,1,4);
go

--Khachhang
insert into KhachHang(HoTen,DiaChi,DienThoai,Email) values(N'Nguyễn Văn A',N'Tp HCM','0169696999','nguyenvana@1yahoo.com')
insert into KhachHang(HoTen,DiaChi,DienThoai,Email) values(N'Nguyễn Văn B',N'Hà Nội','0169696999','nguyenvanB@1yahoo.com')